저자 : 조영호
읽은 기간 : 2023/8/21~10/25
읽게 된 계기
우테코에서 유행했던 책 중 하나여서, 언젠간 읽어야겠다고 생각하고 있던 책입니다.
주변에서 워낙 책이 좋다고 얘기를 많이 들었던 터라, 읽기 전부터 기대가 컸습니다.
제가 이 책을 통해 얻어가고 싶었던 것은, 아직도 추상적이기만 한 '객체지향'을 이해하고 저만의 정의를 갖는 것이었습니다.
내용 요약, 핵심 문장
객체지향의 목표는 실세계를 모방하는 것이 아니다.
오히려 새로운 세계를 창조하는 것이다.
객체지향이라 하면 '현실 세계의 사물을 모방하는 것'이라고 생각해왔던 저에게는 새로운 접근이었습니다.
객체는 현실세계의 '사물'이 아니라, 스스로 생각하고 스스로 결정하는, 주체적인 '생명체'라고 하는 것이 더 적절한 비유라고 이 책에서 언급합니다.
객체들은 서로 메시지(Message) 를 주고받으며 공동의 목표를 달성하기 위해 협력(Collaboration) 합니다.
...
역할과 책임을 수행하며 협력하는 객체들
이 두 문장이 사실상 이 책에서 알려주고자 하는 핵심 내용입니다.
협력에 참여하며 특정한 역할을 수행하는 사람들은, 역할에 적합한 책임을 수행하게 됩니다. 마치 카페의 손님은 음료를 주문할 책임이, 캐시어는 주문 내용을 바리스타에게 전달할 책임이, 바리스타는 커피를 제조할 책임이 있는 것처럼요.
각각의 사람들이 역할에 따른 책임을 잘 수행하고 협력함으로서 우리는 '커피 주문'이라는 목표를 달성할 수 있습니다.
객체 간의 관계도 이와 유사합니다.
객체들은 애플리케이션의 기능을 구현하기 위해 협력합니다. 애플리케이션의 기능은 더 작은 책임으로 분할되고, 책임은 적절한 역할을 수행할 수 있는 객체에 의해 수행됩니다.
이 과정에서 다른 객체에게 도움을 '요청'하기도 합니다.
이렇듯 시스템의 기능, 즉 요구사항을 '객체간의 연쇄적인 요청과 응답의 흐름으로 구성된 협력'으로서 구현하는 것이, 이 책에서 말하고 있는 객체지향의 본질입니다.
읽은 소감
일단 책은 굉장히 재미있었습니다. 정의와 개념을 막연히 나열하기보단 일상적인 소재를 가지고 비유를 하며 차근차근 설명해주는 느낌이라 소설책을 읽는 듯한 느낌을 주었습니다. 그래서 평소에 책읽기를 어려워하는 저도 끝까지 완독하는 게 크게 어렵지 않았습니다. 프로그래밍 서적임에도 코드보다는 그림이 더 많았습니다. 그런 점에서 저는 어렵지 않게 객체지향의 본질을 독자들에게 전달하고자 하는 저자 분의 뜻을 느꼈습니다. 만약 이 도서가 코드 위주의 서술로 객체지향을 설명하는 책이었다면, 저는 디자인 패턴, 상속, 클래스라는 틀에 갇혀 객체지향의 본질적인 개념에 대해 생각해보지 못했을 겁니다.
이 글을 읽고 있는 당신이 만약, '객체지향이 무엇인가요?'라는 질문에 선뜻 대답하기 망설여지는 사람이라면 이 책을 추천합니다.
저도 아직 '객체지향'이라는 패러다임의 본질이 무엇인지 저만의 정의를 얻지는 못했지만, 확실한 것은 제가 객체지향에 대해 완전히 오해하고 있었고, 이 책을 읽은 이제는 사실이 어떤 것인지 조금은 이해할 수 있게 되었다는 것입니다.
조만간 이 책을 한 번 더 읽어보고, 이 책의 저자 분이 쓰신 '오브젝트'까지 읽어 볼 계획입니다.